考虑以下内容import("library_a""library_b"..."library_z"我希望能够根据字母选择正确的图书馆。因此,如果我将z作为输入,它将选择library_z。有什么方法可以在不需要大量switch语句的情况下做到这一点? 最佳答案 如果您想使用不同的库,则必须导入所有这些库并实际在您的代码中使用它们。来自docs:Itisillegalforapackagetoimportitself,directlyorindirectly,ortodirectlyimportapackagewithoutrefer
假设我有以下内容:typeAInterface{....}//ImplementsAtypeBstruct{....}//ImlementsAtypeCstruct{....}现在我有一个函数,它接受A类型的变量作为参数:funcFoo(objA){ifAisB{....}elseifAisC{....}}还有一个main函数:funcmain(){b:=B{}Foo(b)}如何检查传递给函数的参数是否实际上是B类型? 最佳答案 使用typeswitch如前所述,@CeriseLimón链接的旅游页面。funcFoo(vA){swi
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion是否有一种工具可以将我的包中的导入从绝对路径更改为相对路径。目前我对packagebar的导入看起来像这样:importFOO_common/server/src/foo/bar我想把它转换成importfoo/bar是否有像gofmt这样的工具可以为我做这件事?我知道我可以用bashsed解决这个问题。但是,我希望有一个可能存在的go工具。
假设我在golang中有这两个文件://main/a/a.goimport"main/b"typeModelstruct{IDint`json:"id"`Meint`json:"me"`Youint`json:"you"`}funczoom(vb.Injection){}funcStart(){//...}然后第二个文件看起来像://main/b/b.goimport"main/a"typeInjectionstruct{ModelAa.Model}funcGetInjection()Injection{returnInjection{ModelA:a.Start(),}}如您所见,这
我想使用提供的字符串在运行时选择接口(interface)的实现。我不想使用switch语句-代码应该是通用的,并且可以与实现接口(interface)的任何新结构一起使用而无需修改(打开/关闭)。假设我有以下结构:typeFooerinterface{Foo()}typeAstruct{}func(_*A)Foo(){fmt.Println("CallingA")}typeBstruct{}func(_*B)Foo(){fmt.Println("CallingB")}typeCstruct{}func(_*C)Foo(){fmt.Println("CallingC")}然后,我想做类
我的界面.gotypeMyInterfaceinterface{fun1()stringfun2()intfun3()bool}funcFoo(miMyInterface)string{returnmi.fun1()}我的接口(interface)测试.gotypeMyInterfaceImplementationstruct{}func(miMyInterfaceImplementation)fun1()string{return"foobar"}func(miMyInterfaceImplementation)fun2()int{returnint(100)}func(miMyIn
我正在尝试使用builderpatterns(从Java借来的)允许结构实现接口(interface)。例如,理想情况下我会喜欢这种代码模式:packagemainimport"fmt"typeOnerinterface{One()int}typeTwoerinterface{Two()int}funcmain(){s:=NewObject().WithOne(1).Build()_,ok:=s.(Oner)fmt.Println(ok)//Printstrue_,ok=s.(Twoer)fmt.Println(ok)//Printsfalset:=NewObject().WithOn
我试图在Go中创建一个干净的架构API,但我对包逻辑感到困惑。这是项目的结构。main.go在router.go文件中,我可以像这样访问和导入端点import"./endpoints",但是当我尝试在users中导入存储库包时.go或home.go里面我得到一个错误。有没有办法从端点文件夹中的文件访问存储库? 最佳答案 唯一推荐/规范的导入方式是使用完整路径。如果您的代码位于github.com/Uranus/myproject中,那么在endpoints/users.go中,您应该这样导入repository:import"git
我正在尝试进行本地导入,但失败了。我的环境是:回显$GOPATH/家/彼得/去回显$GOROOT/usr/local/go入口点是:/home/peter/go/src/projects/pkgs1/main.go导入的文件是:/home/peter/go/src/projects/pkgs2/stuff.go主.gopackagemainimport("fmt""projects/pkgs2"//东西.gopackagepkgs2import"fmt"funcX(){fmt.Println("X")}关于我做错了什么的任何指示? 最佳答案
我想实现这样的路线用户/个人资料用户/购物车用户/产品目前,我正在做这件事r.HandleFunc("user/signup",signupHandler).Methods("POST")r.HandleFunc("user/signin",signinHandler).Methods("POST")r.HandleFunc("user/profile",profileHandler).Methods("GET")r.HandleFunc("user/cart",cartHandler).Methods("POST")r.HandleFunc("user/products",produ